import { ref, onUnmounted } from 'vue'
import { showSuccessToast, } from 'vant'
import { sendMobileCode } from '@/api/user'

interface Options {
  // 倒计时时长（秒）
  countdown?: number;
  // 发送验证码的异步方法
  sendCode: () => Promise<any>;
  // 发送前的校验方法
  validate?: () => boolean | string;
}
export function useVerificationCode(options: Options) {
  const { countdown = 60, sendCode, validate } = options;
  // 倒计时秒数
  const count = ref(0);
  // 是否正在发送中
  const sending = ref(false);
  // 按钮禁用状态
  const disabled = ref(false);
  // 按钮文字
  const buttonText = ref('获取验证码');

  let timer: number | null = null;
  const startCountdown = () => {
    count.value = countdown;
    disabled.value = true;
    buttonText.value = `${count.value}秒后重新获取`;

    timer = setInterval(() => {
      if (count.value <= 0) {
        clearInterval(timer as number);
        disabled.value = false;
        buttonText.value = '重新获取';
        return;
      }
      count.value--;
      buttonText.value = `${count.value}秒后重新获取`;
    }, 1000);
  };

  // 发送验证码
  const sendVerificationCode = async () => {
    try {
      sending.value = true;
      disabled.value = true;
      await sendCode();
      // 开始倒计时
      count.value = countdown;
      startCountdown();
      // 这里可以添加发送成功的提示
      console.log('验证码发送成功');
    } catch (error) {
      console.log('验证码发送失败:', error);
      // 这里可以替换为你的错误提示组件调用
      disabled.value = false;
    } finally {
      sending.value = false;
    }
  };

  return {
    count,
    sending,
    disabled,
    buttonText,
    sendVerificationCode,
  };

  // const send = async () => {




  //   // //已经倒计时time大于0，,60s内不能重复发送验证码
  //   // if (time.value > 0) return
  //   // try {
  //   //   //输入手机号时 对手机号进行验证
  //   //   await form.value?.validate('mobile')
  //   //   const { data } = await sendMobileCode({ mobile: mobile, type: 'login' })
  //   //   showSuccessToast('发送成功')
  //   //   //填写验证码
  //   //   code.value = data.code
  //   //   //倒计时开始
  //   //   time.value = 60
  //   //   timerId = window.setInterval(() => {
  //   //     time.value--
  //   //     if (time.value <= 0) window.clearInterval(timerId)
  //   //   }, 1000)
  //   // } catch (err) {
  //   //   console.log('err', err)
  //   // }
  // }
  // onUnmounted(() => {
  //   // window.clearInterval(timerId)
  // })
  // return {
  //   code, time, form, send
  // }
}
